//
// Created by Administrator on 2020/7/3.
//回归内容:
//1-面向对象的基本概念
//2-类和对象的声明
//3-构造函数
//4-析构函数
//5-内联成员函数
//6-复制构造函数
//7-类的组合
//8-结构体
//9-联合体
//10-枚举类
//11-UML


//实验四(上):
//1.类与对象的声明与使用;
//2.不同访问属性的成员访问方式;
//3.观察构造函数和析构函数的执行过程。
//例1:声明一个CPU类，包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个共有成员函数run、stop。
//    其中rank为枚举类型CPU_Rank,声明为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整数数,voltage为浮点型的电压值。
//    注意不同访问属性的成员访问方式,并观察构造函数和析构函数的调用顺序。


#include <iostream>
using namespace std;

enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};//声明枚举类型
class CPU
{
private://私有成员
    CPU_Rank rank;
    int frequency;
    float voltage;
public://公有成员
    CPU(CPU_Rank r,int f,float v)//构造函数(分别对应私有数据成员)
    {
        rank=r;
        frequency=f;
        voltage=v;
        cout<<"您构造了一个CPU!"<<endl;
    }
    ~CPU(){cout<<"您析构了一个CPU!"<<endl;}//析构函数
    //以下外部访问接口函数
    CPU_Rank GetRank() const {return rank;}
    int GetFrequency() const {return frequency;}
    float GetVoltage() const {return voltage;}

    void SetRank(CPU_Rank r){rank=r;}
    void SetFrequency(int f){frequency=f;}
    void SetVoltage(float v){voltage=v;}
    //以下为成员函数
    void Run(){cout<<"CPU开始运行!"<<endl;}
    void Stop(){cout<<"CPU停止运行"<<endl;}
};

int main()
{
    CPU a(P6,300,2.8);//声明一个CPU对象a
    a.Run();
    a.Stop();

    return 0;
}